﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


using System.ComponentModel;
using System.Drawing.Design;
using Ahi.Entity.Enums;
using Ahi.Entity.Interfaces;
using MongoDB.Driver;

namespace Ahi.Entity
{
    public class UyeEntity : BaseEntity<UyeEntity>, IRaporlanabilir, IMongoQuery
    {
        #region SubClasses
        public class BelgeEntity
        {
            public class BelgeTipiEntity : TipTanimiEntity { }

            public BelgeTipiEntity BelgeTipi { get; set; }

            [DisplayName("Teslim Edildi")]
            public TeslimDurumu TeslimEdildi { get; set; }
        }

        public class UyelikTipiEntity : TipTanimiEntity { }
        #endregion

        public UyeEntity()
        {
            Telefonlari = new List<Telefon>();
            EmailAdresleri = new List<EmailAdresi>();
            Adresleri = new List<Adres>();
            Belgeler = new List<BelgeEntity>();
            OgrenimListesi = new List<Ogrenim>();
            UyelikBaslangicTarihi = DateTime.Now;
        }

        [DisplayName("Ünvanı")]
        public string Unvani { get; set; }

        [DisplayName("Adı Soyadı")]
        public string AdSoyad { get; set; }

        [DisplayName("Dernekteki Görevi")]
        public string Gorevi { get; set; }

        [DisplayName("Mesleği")]
        public string Meslegi { get; set; }

        [DisplayName("İşyeri")]
        public string Isyeri { get; set; }

        [DisplayName("Cinsiyet")]
        public Cinsiyet Cinsiyet { get; set; }

        [DisplayName("Notlar")]
        public string Notlar { get; set; }

        [DisplayName("Fotoğraf")]
        public byte[] Fotograf { get; set; }

        [DisplayName("Belgeler")]
        public List<BelgeEntity> Belgeler { get; set; }

        [DisplayName("Öğrenim Listesi")]
        public List<Ogrenim> OgrenimListesi { get; set; }

        [DisplayName("Üyelik Şekli")]
        public UyelikTipiEntity UyelikTipi { get; set; }

        [DisplayName("Üyelik Başlangıç Tarihi")]
        public DateTime UyelikBaslangicTarihi { get; set; }

        [DisplayName("Kan Grubu")]
        public KanGrubu KanGrubu { get; set; }

        [DisplayName("Medeni Hali")]
        public MedeniHaller MedeniHal { get; set; }

        [DisplayName("Telefonları")]
        [Category("İletişim")]
        public List<Telefon> Telefonlari { get; set; }

        [DisplayName("Email Adresleri")]
        [Category("İletişim")]
        public List<EmailAdresi> EmailAdresleri { get; set; }

        [DisplayName("Adresleri")]
        [Category("İletişim")]
        public List<Adres> Adresleri { get; set; }
    }
}
